#encoding:utf-8
"""
类的定义
参考文档：https://docs.python.org/zh-cn/3/tutorial/classes.html#class-definition-syntax

类定义语法：
class ClassName:
    <statement-1>
    ...
    <statement-2>

类定义和函数定义一样，只有被执行才会起作用
"""

class Person:
    """
    下面这个类的定义不包括构造函数

    """
    # 类共享变量
    attr = "person"

    # self相当于this
    def sayName(self):
        """
        类的方法，self用于引用自己类内的变量，类似于C++的this
        但是我们不一定需要使用self来命名，可以使用其他的名字
        但是必须是函数里的第一个参数才行
        """

        return "I am a " + self.attr

    # 这里不使用self，而是用的别的名字，例如this
    def SayBye(this):
        # 类的方法
        return "Bye bye, " + this.attr

    """
    当进入类定义时，将创建一个新的命名空间，并将其用作局部作用域，就是说类里的作用域和类外不一样

    当（从结尾处）正常离开类定义时，将创建一个类对象
    """

# 创建一个类对象
xiaoming = Person()
print("create new instance of Person class")
print(xiaoming.sayName())
print(xiaoming.SayBye)

    